package com.llb666.shop.items.domain.repository;

import com.llb666.common.core.utils.page.PagedGridResult;
import com.llb666.shop.items.api.vo.SearchItemsVo;
import com.llb666.shop.items.domain.entity.Items;
import com.llb666.shop.items.domain.entity.bo.ItemsCommentBo;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;

/**
 * @author llb666
 */
@RestController
public interface ItemsRepository {

    /**
     * 根据一级商品分类查询商品信息.
     *
     * @param rootCatIdSet 一级商品分类列表
     * @return 商品信息列表
     */
    List<Items> getItemsByRootCatIdSet(Set<Integer> rootCatIdSet);

    /**
     * 根据商品id和评论等级查询商品评论数.
     *
     * @param id    商品id
     * @param level 评论等级
     * @return 商品评论
     */
    Integer getCommentCount(String id, Integer level);

    /**
     * 查询商品详情.
     *
     * @param itemsId 商品id
     * @return 商品基础信息
     */
    Items queryById(String itemsId);

    /**
     * 商品评论查询.
     *
     * @param paramsMap 商品id,评论等级
     * @param page      -
     * @param size      -
     * @return 商品评论
     */
    PagedGridResult<ItemsCommentBo> queryItemComments(Map<String, Object> paramsMap, Integer page, Integer size);

    /**
     * 根据商品id列表查询商品信息
     *
     * @param itemIdSet 商品id列表
     * @return 商品列表信息
     */
    List<Items> getItemsListByIds(Set<String> itemIdSet);


    /**
     * 根据商品id列表查询商品信息.
     *
     * @param itemIds 商品id
     * @return 商品列表
     */
    CompletableFuture<List<Items>> getItemsFutureByIds(List<String> itemIds);

    /**
     * 通过分类id搜索商品列表
     *
     * @param catId 类目id 排序
     * @param sort  排序
     * @param page  -
     * @param size  -
     * @return 商品列表
     */
    PagedGridResult<SearchItemsVo> searchItemsByThirdCat(Integer catId, String sort, Integer page, Integer size);


}
